{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Backtesting a simple trend following strategy\n",
    "\n",
    "Saeed Amen - saeed@cuemacro.com\n",
    "\n",
    "Here, we demonstrate how to develop a trading strategy in finmarketpy (https://www.github.com/cuemacro/finmarketpy). In this example, we show how to do a backtest of a simple trend following strategy using the `Backtest` class. The trading strategy involves buying spot, when it is above the 200D simple moving average and selling spot, when it below the 200D simple moving average.\n",
    "\n",
    "First, let's do all the imports."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2022-01-26T16:05:44.159267Z",
     "start_time": "2022-01-26T16:05:44.155266Z"
    }
   },
   "outputs": [],
   "source": [
    "# for backtest and loading data\n",
    "from finmarketpy.backtest import BacktestRequest, Backtest\n",
    "from findatapy.market import Market, MarketDataRequest, MarketDataGenerator\n",
    "from findatapy.util.fxconv import FXConv\n",
    "\n",
    "# for logging\n",
    "from findatapy.util.loggermanager import LoggerManager\n",
    "\n",
    "# for signal generation\n",
    "from finmarketpy.economics import TechIndicator, TechParams\n",
    "\n",
    "# for plotting\n",
    "from chartpy import Chart, Style"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Create a logger."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2022-01-26T16:05:45.423257Z",
     "start_time": "2022-01-26T16:05:45.410258Z"
    }
   },
   "outputs": [],
   "source": [
    "# housekeeping\n",
    "logger = LoggerManager().getLogger(__name__)\n",
    "\n",
    "import datetime"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's load up market data. Note you will need to type in your Quandl API key below (or set it as an environment variable before running this Jupyter notebook). You can get a free API key from Quandl.com, once you sign up for a free account."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2022-01-26T16:07:51.747982Z",
     "start_time": "2022-01-26T16:07:43.085619Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2022-01-26 16:07:43,088 - __main__ - INFO - Loading asset data...\n",
      "2022-01-26 16:07:43,113 - findatapy.market.datavendorweb - INFO - Request Quandl data\n",
      "2022-01-26 16:07:43,115 - findatapy.market.datavendorweb - INFO - Request Quandl data\n",
      "2022-01-26 16:07:43,116 - findatapy.market.datavendorweb - INFO - Request Quandl data\n",
      "2022-01-26 16:07:43,117 - findatapy.market.datavendorweb - INFO - Request Quandl data\n",
      "2022-01-26 16:07:44,443 - findatapy.market.datavendorweb - INFO - Completed request from Quandl for ['EURUSD.close']\n",
      "2022-01-26 16:07:44,506 - findatapy.market.datavendorweb - INFO - Request Quandl data\n",
      "2022-01-26 16:07:46,981 - findatapy.market.datavendorweb - INFO - Completed request from Quandl for ['AUDUSD.close']\n",
      "2022-01-26 16:07:47,072 - findatapy.market.datavendorweb - INFO - Completed request from Quandl for ['USDJPY.close']\n",
      "2022-01-26 16:07:47,077 - findatapy.market.datavendorweb - INFO - Request Quandl data\n",
      "2022-01-26 16:07:47,093 - findatapy.market.datavendorweb - INFO - Completed request from Quandl for ['GBPUSD.close']\n",
      "2022-01-26 16:07:47,095 - findatapy.market.datavendorweb - INFO - Request Quandl data\n",
      "2022-01-26 16:07:47,104 - findatapy.market.datavendorweb - INFO - Request Quandl data\n",
      "2022-01-26 16:07:48,112 - findatapy.market.datavendorweb - INFO - Completed request from Quandl for ['USDCAD.close']\n",
      "2022-01-26 16:07:48,115 - findatapy.market.datavendorweb - INFO - Request Quandl data\n",
      "2022-01-26 16:07:49,853 - findatapy.market.datavendorweb - INFO - Completed request from Quandl for ['USDNOK.close']\n",
      "2022-01-26 16:07:49,912 - findatapy.market.datavendorweb - INFO - Completed request from Quandl for ['USDCHF.close']\n",
      "2022-01-26 16:07:50,728 - findatapy.market.datavendorweb - INFO - Completed request from Quandl for ['USDSEK.close']\n",
      "2022-01-26 16:07:51,683 - findatapy.market.datavendorweb - INFO - Completed request from Quandl for ['NZDUSD.close']\n",
      "2022-01-26 16:07:51,738 - findatapy.market.ioengine - INFO - Pushed MarketDataRequest_1018__abstract_curve_key-None__base_depos_currencies-EUR_GBP_AUD_NZD_USD_CAD_CHF_NOK_SEK_JPY__base_depos_tenor-ON_TN_SN_1W_2W_3W_1M_2M_3M_4M_6M_9M_1Y_2Y_3Y_5Y__category-None__category_key-backtest_default-cat_quandl_daily_NYC__cut-NYC__data_engine-None__data_source-quandl__environment-backtest__expiry_date-NaT__fields-close__finish_date-2022-01-26 00:00:00__freeform_md_request-{}__freq-daily__freq_mult-1__fx_forwards_tenor-ON_TN_SN_1W_2W_3W_1M_2M_3M_4M_6M_9M_1Y_2Y_3Y_5Y__fx_vol_part-V_25R_10R_25B_10B__fx_vol_tenor-ON_1W_2W_3W_1M_2M_3M_4M_6M_9M_1Y_2Y_3Y_5Y__gran_freq-None__list_threads-1__old_tickers-EURUSD_USDJPY_GBPUSD_AUDUSD_USDCAD_NZDUSD_USDCHF_USDNOK_USDSEK__push_to_cache-True__resample-None__resample_how-last__split_request_chunks-0__start_date-1989-01-01 00:00:00__tickers-EURUSD_USDJPY_GBPUSD_AUDUSD_USDCAD_NZDUSD_USDCHF_USDNOK_USDSEK__trade_side-trade__vendor_fields-close__vendor_tickers-FRED_DEXUSEU_FRED_DEXJPUS_FRED_DEXUSUK_FRED_DEXUSAL_FRED_DEXCAUS_FRED_DEXUSNZ_FRED_DEXSZUS_FRED_DEXNOUS_FRED_DEXSDUS_df to Redis\n"
     ]
    }
   ],
   "source": [
    "try:\n",
    "    import os\n",
    "    \n",
    "    QUANDL_API_KEY = os.environ['QUANDL_API_KEY']\n",
    "except:\n",
    "    QUANDL_API_KEY = 'TYPE_YOUR_KEY_HERE'\n",
    "\n",
    "# pick USD crosses in G10 FX\n",
    "# note: we are calculating returns from spot (it is much better to use to total return\n",
    "# indices for FX, which include carry)\n",
    "logger.info(\"Loading asset data...\")\n",
    "\n",
    "tickers = ['EURUSD', 'USDJPY', 'GBPUSD', 'AUDUSD', 'USDCAD',\n",
    "           'NZDUSD', 'USDCHF', 'USDNOK', 'USDSEK']\n",
    "\n",
    "vendor_tickers = ['FRED/DEXUSEU', 'FRED/DEXJPUS', 'FRED/DEXUSUK', 'FRED/DEXUSAL', 'FRED/DEXCAUS',\n",
    "                  'FRED/DEXUSNZ', 'FRED/DEXSZUS', 'FRED/DEXNOUS', 'FRED/DEXSDUS']\n",
    "\n",
    "md_request = MarketDataRequest(\n",
    "    start_date=\"01 Jan 1989\",  # start date\n",
    "    finish_date=datetime.date.today(),  # finish date\n",
    "    freq='daily',  # daily data\n",
    "    data_source='quandl',  # use Quandl as data source\n",
    "    tickers=tickers,  # ticker (findatapy)\n",
    "    fields=['close'],  # which fields to download\n",
    "    vendor_tickers=vendor_tickers,  # ticker (Quandl)\n",
    "    vendor_fields=['close'],  # which Bloomberg fields to download\n",
    "    cache_algo='internet_load_return',\n",
    "    quandl_api_key=QUANDL_API_KEY)  # how to return data\n",
    "\n",
    "market = Market(market_data_generator=MarketDataGenerator())\n",
    "\n",
    "asset_df = market.fetch_market(md_request)\n",
    "spot_df = asset_df"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's define all the parameters for the backtest, start/finish dates, technical indicator we'll use etc."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2022-01-26T16:08:31.269917Z",
     "start_time": "2022-01-26T16:08:31.258918Z"
    }
   },
   "outputs": [],
   "source": [
    "backtest = Backtest()\n",
    "br = BacktestRequest()\n",
    "fxconv = FXConv()\n",
    "\n",
    "# get all asset data\n",
    "br.start_date = \"02 Jan 1990\"\n",
    "br.finish_date = datetime.datetime.utcnow()\n",
    "br.spot_tc_bp = 0  # 2.5 bps bid/ask spread\n",
    "br.ann_factor = 252\n",
    "\n",
    "# have vol target for each signal\n",
    "br.signal_vol_adjust = True\n",
    "br.signal_vol_target = 0.05\n",
    "br.signal_vol_max_leverage = 3\n",
    "br.signal_vol_periods = 60\n",
    "br.signal_vol_obs_in_year = 252\n",
    "br.signal_vol_rebalance_freq = 'BM'\n",
    "br.signal_vol_resample_freq = None\n",
    "\n",
    "tech_params = TechParams();\n",
    "tech_params.sma_period = 200;\n",
    "indicator = 'SMA'"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Calculate the technical indicator and the trading signal."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2022-01-26T16:08:46.246634Z",
     "start_time": "2022-01-26T16:08:46.222635Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2022-01-26 16:08:46,224 - __main__ - INFO - Running backtest...\n"
     ]
    }
   ],
   "source": [
    "logger.info(\"Running backtest...\")\n",
    "\n",
    "# use technical indicator to create signals\n",
    "# (we could obviously create whatever function we wanted for generating the signal dataframe)\n",
    "tech_ind = TechIndicator()\n",
    "tech_ind.create_tech_ind(spot_df, indicator, tech_params);\n",
    "signal_df = tech_ind.get_signal()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Run the backtest using the market data, signal etc."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2022-01-26T16:08:55.953174Z",
     "start_time": "2022-01-26T16:08:55.873175Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2022-01-26 16:08:55,874 - finmarketpy.backtest.backtestengine - INFO - Calculating trading P&L...\n",
      "2022-01-26 16:08:55,919 - finmarketpy.backtest.backtestengine - INFO - Cumulative index calculations\n",
      "2022-01-26 16:08:55,932 - finmarketpy.backtest.backtestengine - INFO - Completed cumulative index calculations\n",
      "            EURUSD.close SMA Signal  USDJPY.close SMA Signal  \\\n",
      "Date                                                           \n",
      "2022-01-21                -0.097126                 0.080229   \n",
      "\n",
      "            GBPUSD.close SMA Signal  AUDUSD.close SMA Signal  \\\n",
      "Date                                                           \n",
      "2022-01-21                -0.081552                -0.065944   \n",
      "\n",
      "            USDCAD.close SMA Signal  NZDUSD.close SMA Signal  \\\n",
      "Date                                                           \n",
      "2022-01-21                 0.086692                -0.060962   \n",
      "\n",
      "            USDCHF.close SMA Signal  USDNOK.close SMA Signal  \\\n",
      "Date                                                           \n",
      "2022-01-21                -0.090516                 0.051786   \n",
      "\n",
      "            USDSEK.close SMA Signal  \n",
      "Date                                 \n",
      "2022-01-21                 0.068753  \n"
     ]
    }
   ],
   "source": [
    "contract_value_df = None\n",
    "\n",
    "# use the same data for generating signals\n",
    "backtest.calculate_trading_PnL(br, asset_df, signal_df, contract_value_df, run_in_parallel=False)\n",
    "port = backtest.portfolio_cum()\n",
    "port.columns = [indicator + ' = ' + str(tech_params.sma_period) + ' ' + str(backtest.portfolio_pnl_desc()[0])]\n",
    "signals = backtest.portfolio_signal()\n",
    "\n",
    "# print the last positions (we could also save as CSV etc.)\n",
    "print(signals.tail(1))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Finally display the portfolio cumulative index."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2022-01-26T16:09:47.164989Z",
     "start_time": "2022-01-26T16:09:46.928342Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkQAAAGMCAYAAAA7s70eAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAPYQAAD2EBqD+naQAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOzdd3gU1d4H8O/MZnfTe4OQ0JuKiCIioODFQlPBCzaQ4hW9ig1E8CoqtqsoXhUbomABsYEBFQQVFcTyKlZAEDFESEIS0uvWmfePzU52siWbstnN7vfzPDzMnDlz5uyQ8uNUQZZlGUREREQhTPR3BYiIiIj8jQERERERhTwGRERERBTyGBARERFRyGNARERERCGPARERERGFPAZEREREFPIYEBEREVHIY0BEREREIY8BEREFhDFjxqBHjx7+rgYRhSgGREQdKDc3F4IguP0ze/ZsbN26FYIg4JFHHnFZxjfffANRFPHwww97fNbPP/+MTZs2+eJjdApPPfUUKioqfPqML774Al9++aVPn0FEHUPgXmZEHSc3Nxc9e/bExRdfjMsuu8zpep8+fTBq1ChcffXVyM7Oxr59+9C7d2/lutlsxumnnw5RFLFnzx5otVq3z7r++uthMpnw2muv+eKjtLsxY8YgNzcXubm5bS6roKAAGRkZOHLkiE9bnS688EKMGDECS5cu9dkziKhjhPm7AkSh6NRTT8Xs2bPdXn/mmWfwySef4KabbsL27duV9OXLl+PAgQP47rvvPAZDRqMRH3/8McaOHdue1e40srOzff6MsrIy7Nq1CyNGjPD5s4jI99hlRhSAUlJS8NRTT+GTTz7BW2+9BQDIycnBQw89hAULFmDo0KFu7/3oo4/QvXt35OXl4fXXX1d1xwHAl19+CUEQkJOTg507d2L48OGIiIjA1KlTlTKqqqqwYMECZGZmQq/Xo1evXrj33nthNBpVzxozZgyuvPJK5OfnY/bs2UhNTUVMTAyGDBnitmXq119/xbhx4xAbG4vY2FiMHz8ee/fuhSAIXr2bH3/8EZdddhkyMjIQHh6OHj164PLLL8fu3bsBABMmTMAtt9wCAOjZs6fy+e0tT2PGjMHMmTNhMBgwf/58pKamIioqCnv27AEA/Pnnn1iwYAFOPfVUxMTEIC0tDRMmTMAvv/yi1OGVV15Br169YDQa8cADDyjPcGwpkmUZzz77LE455RSEh4cjLS0Ns2bNQn5+vtNn2rp1K0aNGoXExESXXakbNmyAIAhYu3aty3dy3XXXISwsDMXFxV69QyJyxhYiogB1zTXXYP369Zg/fz7Gjx+Pm266CRkZGXjggQc83tetWzc89thjmDNnDkaOHInrrrsOgK07ztH777+PpUuXYvbs2Zg9eza6du0KADAYDPjHP/6B3NxczJ07F5mZmdi3bx+WLVuGH3/8EVu2bFEFLz/88APOOecc9O3bFwsXLoQoili3bh3mzJmDmpoa3HzzzUre/fv345xzzkFERATuvPNOxMXF4dtvv8U555yD1NTUZt/JwYMHMXLkSAwcOBDz589HVFQUjhw5gi1btqCoqAgAcPnll0On02Hz5s144oknkJycDADK3wBQWFiIqVOnIi8vD3fffTcsFgv69u0LwNa6tHv3bkyaNAlZWVk4ceIEXnjhBYwePRp//vknUlNTMWDAACxZsgR33nknLr30UkyePBkAcNpppynPuPnmm/Hyyy9j5syZuOmmm1BYWIiVK1fiiy++wE8//aTUZ+3atZg5cyaGDRuG++67D2azGa+++ioOHDiAqVOn4vTTT8cll1yCpKQkrF27Ftdcc43qnZjNZmRnZ+OCCy7w6h0SkRsyEXWYI0eOyADke+65x6v8ubm5clRUlDx48GBZEAT5yy+/9PpZAORZs2Y5pX/xxRcyAFkURXnTpk1O1x966CE5NjZWzsnJUaWvWbNGBiBv2bJFSRs9erQMQF6wYIEqb01NjZyamiqffPLJqvRJkybJGo1GPnDggCp9xYoVMgC5e/fuHj/TsmXLZABycXGxx3z333+/DEA+cuSI07XRo0fLoijKw4cPlw0Gg8dy7D7++GMZgLx69Wolzf5vef/99zvl/+qrr2QA8oYNG1TpBw8elLVarXznnXcqaaeccoqcmZkp19fXK2klJSVydHS0fMsttyhpt9xyiyyKopyfn68qc8uWLTIAee3atV59FiJyjV1mRH5QW1uLwsJCpz8mk0mVr3v37rjzzjvx66+/4tJLL8Xo0aPbrQ5jx47FpZde6pT++uuvY+zYsYiIiFDV7eyzzwYAfPbZZ073LFy4UHUeFRWFs88+G4cPH1bS6urq8PHHH2PixIkYMGCAKv8NN9yAqKioZuuckpICANi2bVvzH9ADSZLw5JNPQq/Xu80jyzIqKytRVFSE9PR0ALbB2t54/fXXkZqaipEjR6reYVxcHPr06aN6h4cOHcLw4cMRHh6upCUlJWHgwIH46quvlLQ5c+ZAkiSsX79e9ax33nkHkZGRSisVEbUOAyIiP3j66afRpUsXpz+7du1S5bNardi0aRM0Gg0+++wz5OXltVsdzj33XKe0mpoaHD58GNnZ2U51GzhwIACgpKREdU98fDy6dOniVFZ8fLxqzNGff/4Jq9WK008/3SmvTqdTuqw8ueqqqzBmzBjMmjULEydOxIcffgir1drsfa6ed9ZZZ7m8tnPnTowbNw4xMTGIj49Heno6hgwZAgCwWCxelf/zzz+juLjY5b/xgQMHVO8wKSnJ6d9VkiQcP35cNXB+yJAhGDx4MNatW6ekmUwmbN68GZdeeimio6O9/vxE5IxjiIj84KqrrsLMmTOd0u2/eO3+97//Ye/evdi6dSuuuOIK3Hzzze22tpC91cNRZWUlAGDatGm49tprXd5nH2tk503LDgBUV1cDaGzlaSo2Nhbl5eUeywgPD8eOHTuwfv16rFixApdccgm6d++OBx54ALNmzfKqHvY6aDQap/Tt27dj4sSJSEtLw6JFi3DyyScjKioKRUVFHmcFNlVZWYn+/fvj6aefdvs57KZPn47ly5djyZIlmDFjBiRJwrPPPou8vDzMnz9fdd+cOXNw++23Y+/evRg0aBA++eQTVFZWYvr06V7XjYhcY0BE5Ae9evXCuHHjPObJzc3F0qVLceutt+LCCy/Eww8/jJtvvhnZ2dmYMmWKT+plb2WIiYlptn6tLbusrMzldYPB4FU5oihixowZmDFjBr799lssWbIEs2fPRm1tLW666aY21XH58uXQaDTYuXOnahD6gQMHWlROdHQ0qqqqvHqHDz/8MI4dO4ZHHnlEWYwzIiIC9957L26//XZV3unTp+POO+/Em2++icceewzvvvsukpOTceGFF7aofkQtJUmS19+jgUYURej1+mZnsjIgIgpQN954IxITE/Hggw8q52vWrMGtt96K888/HzExMR7vFwQBcgvXXY2Li0OPHj2cuu7aQ9++fSGKIvbu3et0TZIkHD58uNnP1NTZZ5+NTz/9FMOHD8fq1auVgEgUbaMBWvr5jx07hgEDBjjNyPv999+d8np6xmmnnYbXX38dx44dQ2ZmpsdnyrKMI0eOYNasWbj22msRFRWF/v37u+wCS05OxqRJk7BhwwY89NBD+OCDDzB9+nSPa1IRtQeLxYL8/HylpbczycjI8GoGJscQEQWgt956C9u2bcMzzzyj/GIURREvvvgiCgoKcM899zRbRnp6Ov74448WP3vOnDk4fPgwXnzxRadrFovFaS0ib0VFReGCCy7Apk2bcOTIEdW19evXu205cuTqh7EoitDpdKr//dm7A1v6+bOysnD8+HHV/4Tr6upcbqOSlpYGQRBcPmP27NmQZRmLFi1yGTDV1NQox9u2bcP333+PFStW4Nxzz8UZZ5zhcTzQnDlz8Ndff+HFF19kdxl1KIPBgOrqapd/RFFEXFyc2+v+/CNJklefjy1ERAGmvLwc8+fPx8SJE5229xg2bBiuu+46PP/887jmmmtw5plnui1n/PjxWLNmDa6//noMHz4cMTExmDZtWrPPX7x4MbZt24Z58+Zh586dGD16NOrr63Ho0CFkZ2djy5YtHheG9GTZsmUYMWIERo0ahZtuugmxsbH48ccf8fbbb6NXr17NDpB+/vnnsXbtWowfPx69evWCyWTC9u3b8fXXX6sCuLFjx0Kr1eLGG2/EwoULIcsypkyZgoyMDI/lz5o1C59++inGjRuHadOm4cSJE1i3bh3OOussp24zvV6P8847Dxs2bMCiRYvQv39/ZGRkYNy4cRg9ejTmz5+Pp556Cn///TemTZsGnU6H3NxcbN26FXPmzFFm5qWlpQEAFi1ahGHDhikBXlZWFoYPH46wMPWP6fHjxyM9PR0PPvggevbsyZWyKah169atXSeTeMKAiCjALFq0CFVVVXjuuedcXn/00Ufx/vvv4/rrr8cPP/zg9AvT7oknnoDRaER2djbefPNNzJ0716uASK/XY8eOHVi+fDneeustZRB39+7dcfXVV6NXr16t/myDBw/Grl278J///AePPvooZFnG0KFDsW3bNmzduhXvvvuux/vHjRuHPXv24J133sGJEycQGxuLgQMH4r333lOttN27d2+8/fbbuPfee3HHHXcgNTXVq3E206dPR0VFBVasWIE77rgD6enpmDlzJu69916XLUGvvvoq5s2bh1WrVkGSJNx3333KuKH//e9/OOOMM/D8888rq3ynpqbivPPOU9UlNTUVZ5xxBl566SW89NJLqvJ79uyJ7du3q2bghYWFYcaMGVi+fDn+/e9/N/uZiDorjUbjcWmM9sbNXYmI/GTPnj0477zzsGTJElx//fVISEgAYFunau/evZgyZQqGDx/utDfb448/jsWLF+P3339XlkMg8iWTyYQ//vgDZWVlEAQBvXr1QmxsLCRJgtVqRV5eHmJjY6HVahEdHQ1BEFBbW4s///xTKaNLly5ITk5WtqQ5fPgwamtrAQD9+vXDsWPH0LdvX2g0GuTk5CArKwtRUVGor69HTU0N/vrrL3Tv3h3V1dXo0qULtFotRFFEXl4eiouL0bt3bxw7dky1nltsbCx69+6NmJiYZgdVMyAiIvKTq6++Gr/++iv279/v8vqUKVPwxx9/OA3qHjRoEHQ6HX788ceOqCaRKiDq1asXampqVHvnxcXFoX///ti/f78S5PTo0QM1NTXKult6vV4Zg2hfe8z+td+/f3/IsozDhw8rY370ej0yMzNVC7x2794d8fHx2L9/PywWCwRBwEknnYScnBxotVrExMSo9gvs3bs3tFotUlNTmw2IOKiaiMhPamtrUVlZ6XI6c05ODr766iunBSuzs7Oxb98+3HjjjR1VTSKFKIqIiIhwuZFwRUWFEgwBwIkTJ1QzRx0nZDRdld+e35sB0IWFhcoiqbIs4+jRo0hLS0NVVRViY2NVefV6PQdVExEFulmzZuGDDz7A8OHDcfnllyMtLQ11dXXYt2+fMp7qoYcewt69e7F7924cPXoUzz77LIYMGdKihSiJ2ktERIQq6HHUNLC3WCyqBVATExPRpUsXZdxjRESEKr+7cpuqr69XndfV1SkTJoxGo9ISFR8fj4qKCq9XcWdARETkJ5dddhm2bduGp59+Gs8//zyKi4sRHh6Onj17KqtSZ2VlITs7G3fffTdEUcTkyZPx5JNPcu0hCjieWmISEhKQlJSEgwcPKrNJTznlFK/vd+Sp66u4uBgpKSnIy8tDSkoKcnNzGRAREXUGF110ES666CKPeaZMmeKz1cmJWsJgMLRq37zExEQcO3ZMtbRG0xYib0VERCjbDAFQBl4DtjW+unXrBsA2S81sNntdLscQERERkVesViuMRqNqT8LmBisDtjFDjoGUPWjxxGw2u9wrMS0tTel2E0URPXr0QGFhoXLdYDAgLS0NFRUVzT7DEVuIiIiIyGt//fUXevfujczMTFitVlgslmYXTywoKFAWLwVs2+Q4tvK4IkkSKioqMGTIENTX1+PgwYMAgPz8fPTv3x9arRaCIODYsWOqAdvFxcU49dRTsWfPnhZ9Lk67JyIiIo8cp937U/fu3VFaWqra/qYpjUaDAQMGKFP6+/Xrh/T0dE67JyIiotCRnJyMEydOtPg+dpkRERFRs6KjoyGK/m1HiYyMhNVqRXh4uMvrgiCgW7duOHr0KJKTkwFANfXfE3aZERERkUeyLCuLIfqTKIqQZRmuQhdRFCEIAiRJcrruzTIVDIiIiIgo5HEMEREREYU8BkREREQU8hgQERERUchjQEREREQhjwERERERhTwGRERERBTyGBARERFRyGNARERERCGPARERERGFPAZEREREFPIYEBEREVHIY0BEREREIY8BkY9JkoQTJ05AkiR/VyUk8H13HL7rjsX33XH4rjtWoLxnBkQdwGw2+7sKIYXvu+PwXXcsvu+Ow3cdehgQERERUchjQEREREQhjwERERERhTwGRERERBTyGBARERFRyGNARERERCGPARERERGFPAZEREREFPIYEBEREVHIY0BEREREIY8BERERBTVrdSWk+jp/V4MCXJi/K0BERORLBVeOBQBkbtnj55pQIGMLERERBS3ZYSd1U84h1bXaL7fBUlTQ0VWiAMWAiIiIgpZsNinHRbdcrbpW9sQSHL/2ko6uEgUoBkRERBS8zGaXybLV2ngsyx1VGwpgDIiIiChoySajy/SSB+crx1J1ZUdVhwIYAyIiIgpassV1C5FhzzeNJ4LQQbWhQMaAiIiIgpbjGCK3LBbfV4QCHgMiIiIKWrKbMUSOSp9Y4pRmnXsJqt991RdVogDFgIiIiIJXkxYi476fUdUk0DH++oPLW6s3vOGzalHg4cKMREQUtJp2mRUvntvsPZLBYLu3vtYndaLAxBYiIiIKWrLJ/RiipLsec5luLeZijaGIAREREQUly/E8WI7nub0eMfxcl+nupupTcGOXGRERBaXj101WjqMuuBi1n36ozhCmVQ5lqwWCxvYrUa6v75D6UWBhCxEREQWdpq08kedNcMojCAJSHnsJAGDJP6qkW8tO+LZyFJAYEBERUdCRm6wtJOgjXOYTY+IAACWP3qWkWctKfFexTsB89AiKFl0Xcl2HDIiIiCj4OOxVBgBCeLjqXExIsv2tt6VbjuYo12RDXeNx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\n",
      "text/plain": [
       "<Figure size 600x400 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "style = Style()\n",
    "style.title = \"FX trend strategy\"\n",
    "style.source = 'Quandl'\n",
    "style.scale_factor = 1\n",
    "style.file_output = 'fx-trend-example.png'\n",
    "\n",
    "Chart().plot(port, style=style)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.8"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": true,
   "toc_window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
